package com.songlanyun.modules.shop.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.songlanyun.common.drive.RootEntity;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;

/**
 * 商家的会员等配置，（本系统，不提供商家创建自己的等级，只能系统自动给商家初始化）
 * 
 * @author Mark
 * @email sunlightcs@gmail.com
 * @date 2020-11-05 18:07:51
 */
@Data
@TableName("yxt_shop_user_role_config")
public class ShopUserRoleConfigEntity extends RootEntity<Integer,ShopUserRoleConfigEntity> implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 
	 */
	@TableId
	private Integer id;
	/**
	 * 前端用户角色名称
	 */
	private String roleName;
	/**
	 * 前端用户角色标记码（固定角色一旦定下了不要改变，可升极的角色可以增加）
	 */
	private String roleCode;
	/**
	 * 升级模式的角色的等级
	 */
	private Integer level;

	/**
	 * 
	 */
	@JsonIgnore
	@TableField(fill = FieldFill.INSERT)
	private Date createTime;
	/**
	 * 
	 */
	@JsonIgnore
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private Date updateTime;
	/**
	 * 
	 */
	private Long shopId;

	/**
	 * 会员折扣
	 */
	@DecimalMin(value = "0.1", message = "折扣最小是0.1")
	@DecimalMax(value = "10.0", message = "折扣最小是10.0")
	private BigDecimal discount;

	/**
	 * 输出的等级名称
	 */
	@NotBlank(message = "输出的等级名称不能为空")
	@Length(min = 1, max = 10, message = "输出的等级名称长度在1-10个字")
	private String outerRoleName;
	/**
	 * 消费的阈值
	 */
	@DecimalMin(value = "0", message = "消费的阈值最小是0")
	@DecimalMax(value = "9999999", message = "消费的阈值最大9999999")
	private BigDecimal threshold;
	/**
	 * 升级推荐人数
	 */
	@Max(value = 9999999, message = "升级推荐人数在0-9999999之间")
	private Integer upgradeNum;

	@Override
	public Integer getIdentity() {
		return getId();
	}
}
